package br.com.bb.cslsp.modelo.bem.datamodel;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import org.jboss.logging.Logger;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import br.com.bb.cslsp.ejb.dao.bem.BemDAO;
import br.com.bb.cslsp.modelo.bem.Bem;

public class BemDataModel extends LazyDataModel<Bem>{

	private static final long serialVersionUID = 1L;

	@EJB
	private BemDAO dao;
	
	@Inject
	private transient Logger logger;
	
	private List<Bem> lista;
	private Map<String, String> filtros;
	private int totalQt;
	
	@Override
	public List<Bem> load(int inicio, int quantidade, String campoOrdenacao,
		SortOrder sentidoOrdenacao, Map<String, String> filtros) {
			try {
				logger.info("Campo ordenado: "+campoOrdenacao);
				logger.info("Sentido: "+sentidoOrdenacao.toString());
				lista = (dao.listaTodosPaginadaFiltrada(inicio, quantidade, filtros, (sentidoOrdenacao == SortOrder.ASCENDING ? true : false), campoOrdenacao));
				totalQt = dao.contaFiltrados(filtros);
				super.setRowCount(totalQt);
				if (filtros!=null) {
					this.filtros = filtros;
				}
			} catch (ParseException e) {
				logger.error(e);
			}
			return getLista();
	}

	public List<Bem> getLista() {
		return lista;
	}
	
	public int getTotalQt()  {
		logger.debug("Total Geral..."+totalQt);
		return totalQt;
	}

	public int totalCampo(String campo) {
		int qt;
		logger.debug("Totalizando campo..."+campo);
		try {
			qt = dao.somaFiltradosCampo(filtros, campo);
			logger.debug("Total calculado..."+qt);
			return qt;
		} catch (ParseException e) {
			logger.error(e);
			return 0;
		} catch (Exception e) {
			logger.error(e);
			return 0;
		}
	}
}
